package com.first.nell.utils.analytics.timezone

import com.first.nell.enums.CountryEnum
import java.util.*

object TimeZoneUtil {

    /**
     * 获取当前时间id
     *
     */
    fun currentTimeZoneId(): String {
        val timeZoneId = TimeZone.getDefault().id.toString()
        println("======timeZoneId=$timeZoneId")
        return timeZoneId
    }

    /**
     * 获取当前国家
     *
     */
    fun currentCountrys(): List<CountryEnum> {
        val list = mutableListOf<CountryEnum>()
        val timeZoneId = TimeZone.getDefault().id.toString()
        println("======timeZoneId=$timeZoneId")
        when (timeZoneId) {
//            TimeZoneHostEnum.TimeZoneGha.timeZoneId -> {
//                list.add(CountryEnum.GHANA)
//            }
//            TimeZoneHostEnum.TimeZoneFcfa.timeZoneId -> {
//                list.add(CountryEnum.COTEDIVA)
//            }
//            TimeZoneHostEnum.TimeZoneKsh.timeZoneId -> {
//                list.add(CountryEnum.KENYA)
//            }
            TimeZoneHostEnum.TimeZoneUgx.timeZoneId -> {
                list.add(CountryEnum.UGANDA)
            }
            TimeZoneHostEnum.TimeZoneXaf.timeZoneId -> {
                list.add(CountryEnum.UGANDA)
            }
//            TimeZoneHostEnum.TimeZoneNaira.timeZoneId -> {
//                list.add(CountryEnum.NIGERIA)
//            }
//            TimeZoneHostEnum.TimeZoneVietnam.timeZoneId -> {
//                list.add(CountryEnum.VIETNAM)
//            }
            else -> {
                list.add(CountryEnum.COTEDIVA)
            }
        }
        if (list.isEmpty()) {
            list.add(CountryEnum.COTEDIVA)
        }
        return list
    }

    /**
     * 获取当前需要回传数据的地区
     */
    fun currentTimeZoneSupportCountrys(): List<String> {
        val list = mutableListOf<String>()
        val timeZoneId = TimeZone.getDefault().id.toString()
        println("======timeZoneId=$timeZoneId")
        when (timeZoneId) {
//            TimeZoneHostEnum.TimeZoneGha.timeZoneId -> {
//                list.add(TimeZoneHostEnum.TimeZoneGha.country)
//            }
//            TimeZoneHostEnum.TimeZoneFcfa.timeZoneId -> {
//                list.add(TimeZoneHostEnum.TimeZoneFcfa.country)
//            }
//            TimeZoneHostEnum.TimeZoneKsh.timeZoneId -> {
//                list.add(TimeZoneHostEnum.TimeZoneKsh.country)
//            }
            TimeZoneHostEnum.TimeZoneUgx.timeZoneId -> {
                list.add(TimeZoneHostEnum.TimeZoneUgx.country)
            }
//            TimeZoneHostEnum.TimeZoneNaira.timeZoneId -> {
//                list.add(TimeZoneHostEnum.TimeZoneNaira.country)
//            }
//            TimeZoneHostEnum.TimeZoneVietnam.timeZoneId -> {
//                list.add(TimeZoneHostEnum.TimeZoneVietnam.country)
//            }
            else -> {
                list.add(TimeZoneHostEnum.TimeZoneFcfa.country)
            }
        }
        return list
    }

    /**
     *  转换为真正需要上报数据的服务器地址列表
     *
     * @param list 配置的服务器地址
     */
    fun covertToRealTargetServers(list: List<String>): List<String> {
        val curTimeZoneSupportCountrys: List<String> = currentTimeZoneSupportCountrys()
        val serviceTargetUrlList = list.filter { url ->
            curTimeZoneSupportCountrys.any { country -> url.endsWith(country) }
        }
        val resultTargetUrlList = serviceTargetUrlList.ifEmpty { list }
        println("==== resultTargetUrlList:$resultTargetUrlList")
        return resultTargetUrlList
    }

    /**
     *  转换为真正需要上报数据的服务器地址列表
     *
     * @param list 配置的服务器地址
     */
    fun covertToRealTargetCountrys(list: List<CountryEnum>): List<CountryEnum> {
        val curTimeZoneSupportCountrys: List<String> = currentTimeZoneSupportCountrys()
        val serviceTargetUrlList = list.filter { countryEnum ->
            curTimeZoneSupportCountrys.any { country -> countryEnum.path.endsWith(country) }
        }
        val resultTargetUrlList = serviceTargetUrlList.ifEmpty { list }
        println("==== resultTargetUrlList:$resultTargetUrlList")
        return resultTargetUrlList
    }
}